Bug das setas direcionais do jogo Egoboo [Resolvido]

Publicado por Lucas em 07/11/2012

[ Hits: 3.892 ]

 


Bug das setas direcionais do jogo Egoboo [Resolvido]



O Egoboo é um jogo Open Source estilo "roguelike".

A maioria dos jogos roguelike open source que temos por aí, não têm interface gráfica, são para terminal. Ou ainda, mesmo sendo para terminal, tem alguma front-end gráfica baseada em tiles.

Dos jogos deste estilo, um dos que tem o melhor gráfico (2D) que eu já conheci, foi o Vulture, que na verdade é apenas um front-end gráfico para os jogos NetHack, Slash'EM e UnNetHack.

Mas voltando ao Egoboo, ele tem um diferencial: é 3D!

Quando fui jogar o Egoboo pela primeira vez, percebi logo de cara um comportamento bem estranho: as setas direcionais do teclado não funcionavam direito. Ao apertar para cima, o personagem ia para baixo, ao apertar para baixo, o personagem também ia pra baixo. Ao apertar para esquerda, o personagem ia pra direita, e ao pressionar para a direita, o personagem também ia para a direita.

Pesquisando um pouco no Google, descobri que é um bug de código mesmo.

Compartilho com vocês a solução que eu utilizei para poder jogar o Egoboo sem o bug mencionado.

Esta solução foi testada no Ubuntu 12.10 e usa o gerenciador de pacotes APT e o DPKG.

1. Crie um diretório qualquer, para trabalhar nele:

mkdir codigofonte

2. Entre no diretório criado e baixe o código fonte do seu repositório:

cd codigofonte
$ apt-get source egoboo


3. Após terminar de baixar os fontes, entre no diretório criado pelo apt-get:

cd egoboo-2.8.1

4. Altere o arquivo ./src/game/game.c usando o Gedit ou qualquer editor de texto puro. Nas linhas 2055 e 2056, você verá o seguinte texto:
joy_pos.x = ( control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_RIGHT ) - control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_LEFT ) );
joy_pos.y = ( control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_DOWN ) - control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_UP ) );

Você deve trocar estas duas linhas pelas quatro linhas seguintes:

/*joy_pos.x = ( control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_RIGHT ) - control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_LEFT ) );
joy_pos.y = ( control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_DOWN ) - control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_UP ) );*/

joy_pos.x = ( (int)control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_RIGHT ) - (int)control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_LEFT ) );
joy_pos.y = ( (int)control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_DOWN ) - (int)control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_UP ) );

Obs.: Tudo o que eu fiz foi comentar as linhas originais e copiá-las fazendo uma pequena alteração.

5. De dentro do diretório "egoboo-2.8.1" (você já está nele), rode o seguinte comando:

dpkg-buildpackage -rfakeroot -uc -b

Isso vai compilar os fontes e gerar os pacotes Deb.

6. Volte para o diretório pai e instale o pacote criado. Você pode dar dois cliques nele para instalá-lo. Se isso não funcionar, pode instalar na mão:

cd ../
$ sudo dpkg -i egoboo_2.8.1-1ubuntu1_amd64.deb


Obs.: Eu estava usando uma máquina 64 bits, por isso o nome com amd64 no final. Se sua máquina for 32 bits, o nome do arquivo certamente será outro.

Percebam que esta solução é para o Ubuntu. Caso você utilize qualquer outra distribuição GNU/Linux, pode baixar o código fonte direto da página dos desenvolvedores, fazer as mesmas alterações no mesmo arquivo, e instalar o jogo com os comandinhos já manjados por quem costuma compilar as coisas na mão:

# ./configure
# make
# make install


Possivelmente vai dar um monte de erro no ./configure, dizendo que falta biblioteca de desenvolvimento de alguma coisa, mas o README que vem junto com o código fonte, deve ter as informações necessárias sobre as dependências.

Espero que tenha sido útil, e bom jogo para vocês. =)

Outras dicas deste autor

Usando o i4l para criar instaladores de aplicativos para Linux

Instalação de programas em máquinas offline

Instalando o gnome-app-install no Ubuntu 10.04 Lucid Lynx

Leitura recomendada

Precisando fazer uma live streaming? Instale o Open Broadcaster Software

Instalando Frostwire no Fedora 24

ChronoPlus - Cronômetro para seu GNU/Linux

MSN e Hotmail no Linux

RecordMyDesktop no Slackware Funcionando no KDE Plasma 5

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts